﻿using System;
using System.Collections.Generic;
using StarTrek.Space;
using StarTrek.Weapon;
using StarTrek.World;

namespace StarTrek.Ship
{
    public interface iShip //Current Players ship
    {
        float ShieldStrength { get; } //Repair Sheilds to inprove Strength
        float HullStrength { get; }   //Repair Ship to improve Strength
        float PowerUnit{get;set;}

        iSpaceItem CurrentLocation{ get; set;}
        void Travel(iSpaceItem Target); //Calulate Power for impluse or Warp

        List<iWeapon> GetWeapons();
        iWeapon GetWeapon(string weapon);

        void ApplyDamage(float DamagePoints);
        ShipStatus Offense(iShip Target, iWeapon Weapon, float Engery); //Phasers, Photons (Disruputres)
        iShip Defense(iWeapon Weapon, float Engery); //Sheilds, Repair?

        ShipStatus Research(iShip Target);  //What is my enemy's ShipStatus
        SpaceUnitInfo Research(iSpaceItem Target); //What is interesting at this location
        QuadrantInfo Research(Quadrant Target);
        GalaxyInfo Research(Galaxy Target);
                
        String BuilderRace{get;} //TODO: maybe a enum Klingon, Kardassion, Federation, Borg
        String ShipModel{get;}
        string ShipName { get; }
        
        ShipStatus CreateShipStatus(); //Builder funciton for shipStatus;
    }
}
